#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
简化的PE分析测试
"""

from pe_analysis_system import PEAnalysisSystem
import pandas as pd
import numpy as np

def simple_test():
    """简单测试"""
    print("PE分析系统简单测试")
    print("="*40)
    
    # 创建分析器
    analyzer = PEAnalysisSystem()
    
    # 测试股票：招商银行
    stock_code = "600036"
    
    try:
        # 1. 获取基本信息
        print(f"1. 获取 {stock_code} 基本信息...")
        if analyzer.get_stock_basic_info(stock_code):
            print(f"   成功: {analyzer.stock_name}")
        else:
            print("   失败")
            return
        
        # 2. 获取价格数据
        print("2. 获取历史价格数据...")
        if analyzer.get_historical_price_data(stock_code, start_date="20220101"):
            print(f"   成功: {len(analyzer.price_data)} 条记录")
            print(f"   价格范围: {analyzer.price_data['close_price'].min():.2f} - {analyzer.price_data['close_price'].max():.2f}")
        else:
            print("   失败")
            return
        
        # 3. 模拟财务数据（如果API获取失败）
        print("3. 准备财务数据...")
        if not analyzer.get_financial_data(stock_code):
            print("   API获取失败，使用模拟数据...")
            # 创建模拟的季度财务数据
            dates = pd.date_range(start='2022-03-31', end='2024-12-31', freq='Q')
            profits = np.random.normal(300, 50, len(dates))  # 模拟净利润（亿元）
            
            analyzer.financial_data = pd.DataFrame({
                '日期': dates,
                '净利润': profits,
                '营业总收入': profits * 4  # 模拟营收
            })
            print(f"   使用模拟数据: {len(analyzer.financial_data)} 条记录")
        else:
            print(f"   成功: {len(analyzer.financial_data)} 条记录")
        
        # 4. 计算TTM
        print("4. 计算TTM净利润...")
        if analyzer.calculate_ttm_profit():
            print(f"   成功: {len(analyzer.ttm_data)} 个数据点")
            print(f"   最新TTM净利润: {analyzer.ttm_data['TTM净利润'].iloc[-1]:.2f} 亿元")
        else:
            print("   失败")
            return
        
        # 5. 设置股本数据
        print("5. 设置股本数据...")
        analyzer.capital_data = pd.DataFrame({
            '变动日期': [pd.Timestamp('2022-01-01')],
            '总股本': [252.2]  # 招商银行总股本约252亿股
        })
        print("   完成")
        
        # 6. 计算PE
        print("6. 计算市值和PE...")
        if analyzer.calculate_market_value_and_pe():
            print(f"   成功: {len(analyzer.pe_data)} 个PE数据点")
            if len(analyzer.pe_data) > 0:
                current_pe = analyzer.pe_data['pe_ratio'].iloc[-1]
                print(f"   当前PE: {current_pe:.2f}")
        else:
            print("   失败")
            return
        
        # 7. 分析PE分布
        print("7. 分析PE分布...")
        if analyzer.analyze_pe_distribution():
            print("   成功")
            results = analyzer.analysis_results
            print(f"   PE均值: {results['pe_mean']:.2f}")
            print(f"   PE标准差: {results['pe_std']:.2f}")
            print(f"   当前分位数: {results['current_percentile']:.1f}%")
        else:
            print("   失败")
            return
        
        # 8. 生成图表
        print("8. 生成分析图表...")
        try:
            analyzer.plot_pe_trend_analysis()
            print("   图表生成成功")
        except Exception as e:
            print(f"   图表生成失败: {e}")
        
        print("\n" + "="*40)
        print("测试完成！")
        print(analyzer.get_analysis_summary())
        
    except Exception as e:
        print(f"测试过程中出错: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    simple_test()
